package com.ruoyi.produce.process.worksheet.service;

import com.ruoyi.produce.process.worksheet.domain.ProduceProcedureTransferSheet;
import com.ruoyi.produce.process.worksheet.domain.ProduceWorkSheet;
import com.ruoyi.produce.process.worksheet.domain.ProduceWorkSheetAllocationRecord;

import java.util.List;

/**
 * 加工单
 * 业务层
 * @author Drj 2021/6/28
 */
public interface IProduceWorkSheetService {
    /**
     * 查找加工单
     * @param produceWorkSheet
     * @return
     */
    public List<ProduceWorkSheet> selectProduceWorkSheetList(ProduceWorkSheet produceWorkSheet);

    /**
     * 查找正在生产的加工单
     * @param produceWorkSheet
     * @return
     */
    public List<ProduceWorkSheet>selectProcessingProduceWorkSheetList(ProduceWorkSheet produceWorkSheet);

    /**
     * 查找生产完成的加工单
     * @param produceWorkSheet
     * @return
     */
    public List<ProduceWorkSheet>selectFinishedProduceWorkSheetList(ProduceWorkSheet produceWorkSheet);

    /**
     * 根据加工单号查找
     * @param workSheetId 加工单号
     * @return
     */
    public ProduceWorkSheet selectProduceWorkSheetById(String workSheetId);

    /**
     * 新增加工单
     * @param produceWorkSheet
     * @return
     */
    public int insertProduceWorkSheet(ProduceWorkSheet produceWorkSheet) throws Exception;

    /**
     * 更新加工单
     * @param produceWorkSheet
     * @return
     */
    public int updateProduceWorkSheet(ProduceWorkSheet produceWorkSheet);

    /**
     * 删除加工单
     * 仅修改加工单删除标志
     * @param produceWorkSheet
     * @return
     */
    public int updateProduceWorkSheetDeleteFlag(ProduceWorkSheet produceWorkSheet);

    /**
     * 加工单产线分配
     * @param produceWorkSheet
     * @return
     */
    public int updateProduceWorkSheetAllocation(ProduceWorkSheet produceWorkSheet);

    /**
     * 加工单产线分配移除
     * @param produceWorkSheet
     * @return
     */
    public int removeProduceWorkSheetAllocation(ProduceWorkSheet produceWorkSheet);

    /**
     * 查找加工单产线分配记录
     * @param produceWorkSheetAllocationRecord
     * @return
     */
    public List<ProduceWorkSheetAllocationRecord>selectProduceWorkSheetAllocationRecordList(ProduceWorkSheetAllocationRecord produceWorkSheetAllocationRecord);

    /**
     * 查找加工单工序移交记录
     * @param produceProcedureTransferSheet
     * @return
     */
    public List<ProduceProcedureTransferSheet> selectProduceProcedureTransferSheetList(ProduceProcedureTransferSheet produceProcedureTransferSheet);

    /**
     * 新增/更新加工单工序移交记录
     * @param produceProcedureTransferSheet
     * @return
     */
    public int editProduceProcedureTransferSheet(ProduceProcedureTransferSheet produceProcedureTransferSheet);

    /**
     * 确认工序移交记录
     * @param produceProcedureTransferSheet
     * @return
     */
    public int confirmProduceProcedureTransferSheet(ProduceProcedureTransferSheet produceProcedureTransferSheet);
}
